package pers.cfeng.server.dataManage.logger;

/**
 * 个人习惯： Logger的 相关的常量定义
 * [Size][CheckSum][data]  size 为4字节的Int表示data长度 , checkSum 4字节表示该条日志校验和
 */

public interface LoggerConstant {
    String LOG_SUFFIX = ".log"; //日志文件的结尾

    int OFFSET_SIZE = 0;
    int OFFSET_CHECKSUM = OFFSET_SIZE + 4; //checksum的偏移量
    int OFFSET_DATA = OFFSET_CHECKSUM + 4;

    int seed = 13331;   //校验和计算的seed

    //数据恢复 --- 日志的删除为逻辑删除， 所以只有两种日志，增加和修改
    byte LOG_TYPE_INSERT = 0;
    byte LOG_TYPE_UPDATE = 1;

    //数据操作： REDO, UNDO
    int REDO = 0;
    int UNDO = 1;

    //日志的内容部分各个部分偏移量, TID在TID文件中8位, pageNO 4位,页内偏移2位
    //[logtype][TID][pageNo][oldRaw][newRaw]
    int OFFSET_TYPE = 0;
    int OFFSET_TID = OFFSET_TYPE + 1;
    int OFF_UPDATE_UID = OFFSET_TID + 8;
    int OFF_UPDATE_RAW = OFF_UPDATE_UID + 8; //uid 为pageNo + offset 一共8位, raw为old和new的合并
    int OFFSET_PAGE_NO = OFFSET_TID + 8;
    int OFF_INSERT_OFFSET = OFFSET_PAGE_NO + 4;
    int OF_INSERT_RAW = OFF_INSERT_OFFSET + 2;
}
